//////////////////////////////////////////////////////////////////////////

#ifndef _CLIENTMAPPARSER_H_
#include "clientmapparser.h"
#endif

//////////////////////////////////////////////////////////////////////////


ClientMapParser::ClientMapParser( const char* _fileName )
: MapParserBase(_fileName),
  m_Width(0),
  m_Height(0)
{
}


//////////////////////////////////////////////////////////////////////////


ClientMapParser::~ClientMapParser()
{
}


//////////////////////////////////////////////////////////////////////////


void ClientMapParser::ParseCircle()
{
    // Read shape absolute position
    Point pt;
    m_FileStream >> pt.x >> pt.y;

    // Read radius
    float radius;
    m_FileStream >> radius;
}


//////////////////////////////////////////////////////////////////////////


void ClientMapParser::ParseRect()
{
    // Read shape absolute position
    Point pt;
    m_FileStream >> pt.x >> pt.y;

    // Read size
    float width, height;
    m_FileStream >> width >> height;
}


//////////////////////////////////////////////////////////////////////////


void ClientMapParser::ParsePolygon()
{
    // Read shape absolute position
    Point pt;
    m_FileStream >> pt.x >> pt.y;

    // Read number of vertexes
    int n;
    m_FileStream >> n;

    // Read all vertexes
    for ( int i = 0; i < n; i++ )
    {
        float x, y;
        m_FileStream >> x >> y;
    }
}


//////////////////////////////////////////////////////////////////////////


void ClientMapParser::ParseWall()
{
    // Read wall absolute position
    Point pt;
    m_FileStream >> pt.x >> pt.y;
    m_WallPoints.push_back(pt);
}


//////////////////////////////////////////////////////////////////////////


void ClientMapParser::SetMapSize( int _w, int _h )
{
    m_Width = _w;
    m_Height = _h;
}


//////////////////////////////////////////////////////////////////////////


void ClientMapParser::ParseRevivalPoints()
{
    // Number of revival points
    int n;
    m_FileStream >> n;

    // Read all points
    for ( int i = 0; i < n; i++ )
    {
        // Read revival point
        Point pt;
        m_FileStream >> pt.x >> pt.y;
    }
}


//////////////////////////////////////////////////////////////////////////


const Points& ClientMapParser::GetWalls() const
{
    return m_WallPoints;
}

//////////////////////////////////////////////////////////////////////////
